﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaEntidades;
using System.Data;
using System.Data.SqlClient;
namespace CapaDatos{
    public class datProducto{

        public static int EditarProducto(entProducto p){
            SqlCommand cmd = null;
            int resultado = 0;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspEditarProducto", conex);
                cmd.Parameters.AddWithValue("@prmCodigo", p.Codigo);
                cmd.Parameters.AddWithValue("@prmDescripcion", p.Descripcion);
                cmd.Parameters.AddWithValue("@prmPrecio", p.Precio);
                cmd.Parameters.AddWithValue("@prmStock", p.Stock);
                cmd.Parameters.AddWithValue("@prmImagen", p.Imagen);
                cmd.Parameters.AddWithValue("@prmidMarca", p.idMarca);
                cmd.Parameters.AddWithValue("@prmidProducto", p.idProducto);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                resultado = cmd.ExecuteNonQuery();
            }catch (Exception e){
                resultado = 0;
            }finally{
                cmd.Connection.Close();
            }
            return resultado;
        }

        public static int InsertarProducto(entProducto p){
            SqlCommand cmd = null;
            int resultado = 0;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspInsertarProducto", conex);
                cmd.Parameters.AddWithValue("@prmCodigo", p.Codigo);
                cmd.Parameters.AddWithValue("@prmDescripcion", p.Descripcion);
                cmd.Parameters.AddWithValue("@prmPrecio", p.Precio);
                cmd.Parameters.AddWithValue("@prmStock", p.Stock);
                cmd.Parameters.AddWithValue("@prmImagen", p.Imagen);
                cmd.Parameters.AddWithValue("@prmidMarca", p.idMarca);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                resultado = cmd.ExecuteNonQuery();
            }
            catch (Exception e){
                resultado = 0;
            }finally{
                cmd.Connection.Close();
            }
            return resultado;
        }


        public static List<entProducto> ListarProductoxMarcas(int Marca)
        {
            List<entProducto> Lista = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            try
            {
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspListarProductoxMarcas", conex);
                cmd.Parameters.AddWithValue("@prmMarca", Marca);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                dr = cmd.ExecuteReader();
                Lista = new List<entProducto>();
                while (dr.Read())
                {
                    entProducto m = new entProducto();
                    m.idProducto = Convert.ToInt32(dr["idProducto"]);
                    m.Codigo = dr["Codigo"].ToString();
                    m.Descripcion = dr["Descripcion"].ToString();
                    m.Imagen = dr["Imagen"].ToString();
                    m.Precio = Convert.ToDouble(dr["Precio"]);
                    m.Stock = Convert.ToInt32(dr["Stock"]);
                    m.idMarca = Convert.ToInt32(dr["idMarca"]);
                    Lista.Add(m);
                }
            }
            catch (Exception e)
            {
                Lista = null;
            }
            finally
            {
                cmd.Connection.Close();
            }
            return Lista;
        }


        public static entProducto  BuscarProducto(int idProducto){
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            entProducto m = null;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspBuscarProducto", conex);
                cmd.Parameters.AddWithValue("@prmidProducto", idProducto);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read()){
                    m = new entProducto();
                    m.idProducto = Convert.ToInt32(dr["idProducto"]);
                    m.Descripcion = dr["Descripcion"].ToString();
                    m.Imagen = dr["Imagen"].ToString();
                    m.Codigo = dr["Codigo"].ToString();
                    m.Precio = Convert.ToDouble(dr["Precio"]);
                    m.Stock = Convert.ToInt32(dr["Stock"]);
                    m.idMarca = Convert.ToInt32(dr["idMarca"]);
                }
            }catch (Exception e){
                m = null;
            }finally{
                cmd.Connection.Close();
            }
            return m;
        }
    }

}
